<?php
namespace app\queue\jobs;

use app\admin\model\Excel;
use think\queue\Job;
use think\Db;
use app\admin\controller\We;

class QueueClient
{
    use \app\wechat\traits\Wechat;

    public function daoruOrderJob(Job $job,$data){

        $isJobDone = $this->insertToOrderTable($data);
        if ($isJobDone) {
            //成功删除任务
            $job->delete();
//            print("\n\n<info>消息已经完成并删除"."</info>\n");
        } else {
            //任务轮询4次后删除
            if ($job->attempts() > 3) {
                // 第1种处理方式：重新发布任务,该任务延迟10秒后再执行
                //$job->release(10);
                // 第2种处理方式：原任务的基础上1分钟执行一次并增加尝试次数
                //$job->failed();
                // 第3种处理方式：删除任务
                $job->delete();
//                print("\n\n<warn>Hello Job has been retried more than 3 times!"."</warn>\n");
            }
        }
    }


    /**
     * 插入订单表格中
     * @param $data
     * @return mixed
     */
    public function insertToOrderTable($data)
    {
//        $excel = new Excel();
//        $res = $excel->saveAll($data);
        $res = Db::name('order')->insertAll($data);
        if($res){
            return true;
        }else{
            return false;
        }
    }


    //短信队列
    public function sendMAIL(Job $job, $data)
    {
        $isJobDone = $this->insertSendMessage($data);
        if ($isJobDone) {
            //成功删除任务
            $job->delete();
        } else {
            //任务轮询4次后删除
            if ($job->attempts() > 3) {
                // 第1种处理方式：重新发布任务,该任务延迟10秒后再执行
                //$job->release(10);
                // 第2种处理方式：原任务的基础上1分钟执行一次并增加尝试次数
                //$job->failed();
                // 第3种处理方式：删除任务
                $job->delete();
            }
        }
    }
    /**
     * 根据消息中的数据进行实际的业务处理
     * @param array|mixed    $data     发布任务时自定义的数据
     * @return boolean                 任务执行的结果
         */
    public function insertSendMessage($data)
    {
        $we = new We();
        $send = $we->message($data['signName'],$data['templateCode'],$data['phoneNumbers']);
        if($send->Code == 'OK'){
            return true;
        }else{
            return false;
        }
    }


    //微信队列
    public function sendWechatsms(Job $job, $data)
    {
        $isJobDone = $this->insertWechatsms($data);
        if ($isJobDone) {
            //成功删除任务
            $job->delete();
        } else {
            //任务轮询4次后删除
            if ($job->attempts() > 3) {
                // 第1种处理方式：重新发布任务,该任务延迟10秒后再执行
                //$job->release(10);
                // 第2种处理方式：原任务的基础上1分钟执行一次并增加尝试次数
                //$job->failed();
                // 第3种处理方式：删除任务
                $job->delete();
            }
        }
    }
    /**
     * 根据消息中的数据进行实际的业务处理
     * @param array|mixed    $data     发布任务时自定义的数据
     * @return boolean                 任务执行的结果
     */
    public function insertWechatsms($data)
    {
        $arr = self::getInstance()->notice->send($data);
        $we = new We();
        $send = $we->sendWechat($data['openid'],$data['template'],$data['data'],$data['url']);
        if($send){
            return true;
        }else{
            return false;
        }
    }
}
